The invention relates to network management. More particularly, the invention relates to a programmable network switching engine.
Prioritization of network packets is typically used by network components such as, for example, network switches and/or routers to provide more efficient use of network bandwidth. By having a priority associated with the packets, network components can expedite packets having a higher priority ahead of packets with lower priority.
Typical network prioritization schemes are either hardwired, and therefore inflexible, or performed by general purpose processors, and therefore processor-intensive and slow. Hardwired prioritization schemes are inflexible because the scheme must be determined and built into the network components that are to use the prioritization scheme. The hardwired solutions can be expensive and difficult to upgrade because new prioritization schemes require hardware replacement and potential upgrade incompatibilities, which can make prioritization scheme changes prohibitively expensive.
Programmable prioritization schemes rely on general purpose processors to execute a sequence of instructions to prioritize network packets. The general purpose processor is used for other network-related purposes and the addition of prioritization duties can result in unacceptably slow performance from the device (e.g., a network switch) prioritizing the packets. Thus, prior art prioritization schemes are inefficient and/or inflexible.
A packet of data is received. A set of candidate priorities and a set of flags are received. A set of one or more instructions to operate on the set of candidate priorities and the set of flags is executed. A priority is generated for the packet of data based on execution of the set of one or more instructions.